syn match slangOctal "\<0\d\+\>" contains=slangOctalError
syn match slangOctalError "[89]\+" contained
syn match slangHex "\<0[xX][0-9A-Fa-f]*\>"
syn match slangDecimal "\<[1-9]\d*\>"
syn match slangFloat "\<\d\+\."
syn match slangFloat "\<\d\+\.\d\+\([Ee][-+]\=\d\+\)\=\>"
syn match slangFloat "\<\d\+\.[Ee][-+]\=\d\+\>"
syn match slangFloat "\<\d\+[Ee][-+]\=\d\+\>"
syn match slangFloat "\.\d\+\([Ee][-+]\=\d\+\)\=\>"
syn match slangImaginary "\.\d\+\([Ee][-+]\=\d*\)\=[ij]\>"
syn match slangImaginary "\<\d\+\(\.\d*\)\=\([Ee][-+]\=\d\+\)\=[ij]\>"
syn region slangString oneline start='"' end='"' skip='\\"'
syn match slangCharacter "'[^\\]'"
syn match slangCharacter "'\\.'"
syn match slangCharacter "'\\[0-7]\{1,3}'"
syn match slangCharacter "'\\d\d\{1,3}'"
syn match slangCharacter "'\\x[0-7a-fA-F]\{1,2}'"
syn match slangDelim "[][{};:,]"
syn match slangOperator "[-%+/&*=<>|!~^@]"
"catch errors caused by wrong parenthesis
syn region slangParen matchgroup=slangDelim transparent start='(' end=')' contains=ALLBUT,slangParenError
syn match slangParenError ")"
syn match slangComment "%.*$"
syn keyword slangOperator sizeof
syn region slangPreCondit start="^\s*#\s*\(ifdef\>\|ifndef\>\|iftrue\>\|ifnfalse\>\|iffalse\>\|ifntrue\>\|if\$\|ifn\$\|\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=cComment,slangString,slangCharacter,slangNumber
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_slang_syntax_inits")